/**
 * Copyright &copy; 2012-2016 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 */
package com.sdkj.dspservice.modules.sys.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.sdkj.dspservice.common.base.entity.DataEntity;
import lombok.Data;

import java.util.*;

/**
 * 用户Entity
 * @author tm
 * @version 2020-11-23
 */
@Data
@TableName(value = "sys_user")
public class User extends DataEntity<User> {

	/**
	 * 登录模式常量：1.正常登录模式  2.三方登录模式（即在A登录，本系统获取A的登录状态，进行自己的登录）
	 */
	public static final String LOGIN_MODEL_NORMAL = "1";
	public static final String LOGIN_MODEL_TRIPARTITE = "2";


//	/**
//	 * 归属公司
//	 */
//	private Office company;
//	/**
//	 * 归属部门
//	 */
//	private Office office;
	/**
	 * 登录名
	 */
	private String loginName;
	/**
	 * 密码
	 */
	private String password;
	/**
	 * 工号
	 */
	private String no;
	/**
	 * 姓名
	 */
	private String name;
	/**
	 * 邮箱
	 */
	private String email;
	/**
	 * 电话
	 */
	private String phone;
	/**
	 * 手机
	 */
	private String mobile;
	/**
	 * 用户类型
	 */
	private String userType;
	/**
	 * 最后登陆IP
	 */
	private String loginIp;
	/**
	 * 最后登陆日期
	 */
	private Date loginDate;
	/**
	 * 是否允许登陆
	 */
	private String loginFlag;
	/**
	 * 头像
	 */
	private String photo;
	/**
	 * cdp用户ID
	 */
	private String cdpUserId;
	/**
	 * 上次登陆IP
	 */
	@TableField(exist = false)
	private String oldLoginIp;
	/**
	 * 上次登陆日期
	 */
	@TableField(exist = false)
	private Date oldLoginDate;
	/**
	 * 根据角色查询用户条件
	 */
	@TableField(exist = false)
	private Role role;
	/**
	 * 原登录名
	 */
	@TableField(exist = false)
	private String oldLoginName;
	/**
	 * 新密码
	 */
	@TableField(exist = false)
	private String newPassword;
	/**
	 * 拥有角色列表
	 */
	@TableField(exist = false)
	private List<Role> roleList = new ArrayList<>();
	/**
	 * 已选中的角色ids，用于前端回显
	 */
	@TableField(exist = false)
	private String haveRoleIds;
	/**
	 * 登录模式：1.正常登录模式  2.cdp登录模式
	 */
	@TableField(exist = false)
	private String loginModel;

	@TableField(exist = false)
	private String roleNames;
	@TableField(exist = false)
	private String roleEnNames;

	public User() {
		super();
		loginModel = LOGIN_MODEL_NORMAL;
//		this.loginFlag = Global.YES;
	}
	
	public User(String id){
		super(id);
		loginModel = LOGIN_MODEL_NORMAL;
	}

	public User(String id, String loginName){
		super(id);
		this.loginName = loginName;
	}

	public User(Role role){
		super();
		this.role = role;
	}

	@JsonIgnore
	public List<String> getRoleIdList() {
		List<String> roleIdList = new ArrayList<>();
		for (Role role : roleList) {
			roleIdList.add(role.getId());
		}
		return roleIdList;
	}

	public void setRoleIdList(List<String> roleIdList) {
		roleList = new ArrayList<>();
		for (String roleId : roleIdList) {
			Role role = new Role();
			role.setId(roleId);
			roleList.add(role);
		}
	}

//	/**
//	 * 用户拥有的角色名称字符串, 多个角色名称用','分隔.
//	 */
//	public String getRoleNames() {
//		return CollectionsUtils.extractToString(roleList, "name", Punctuation.COMMA);
//	}
	
	public boolean isAdmin(){
		return isAdmin(this.id);
	}
	
	public static boolean isAdmin(String id){
		return id != null && "1".equals(id);
	}

	/**
	 * 制作Antd的用户格式
	 * @return
	 */
	public Map<String, Object> makeAntdUser(){
		Map<String, Object> result = new HashMap<>(16);
		result.put("userid", id);
		result.put("name", name);
		result.put("roleNames", roleNames);
		result.put("roleEnNames", roleEnNames);
//		result.put("avatar", "../../assets/images/report.png");
		return result;
	}

}